package day9;

/**
 * @author oldliu
 * @since 1.0
 */
public class RentalCompany {
    private String name = "合肥筋斗云租车有限公司", tele = "0551-62995555";
    private Vechile[] cars = new Vechile[30];
    private int count = 0;//当前车辆数目

    private RentHistory []histories=new RentHistory[1000];
    private int hist=0;
    public RentalCompany() {
        cars[count++] = new Car("皖A49933", "大众朗逸", 200, "大众");
        cars[count++] = new BigCar("皖Afff33", "宇通客车", 600, 29);
    }

    //显示信息
    public void showInfor() {
        System.out.println("本租车公司叫" + name + ",电话是" + tele);
        System.out.println("车辆信息如下:");
        for (int i = 0; i < count; i++) {
            cars[i].show();
        }
    }

    /**
     * 如果是轿车，只显示轿车，否则只显示客车。。。
     * 只显示可出租状态的
     * 返回一个数量，返回值改成int
     * @param type
     */
    public void show(String type) {
        System.out.println("可租车辆信息如下:");
        for (int i = 0; i < count; i++) {
            if (!cars[i].isState())
                continue;
            if (type.equals("轿车") && cars[i] instanceof Car) {
                cars[i].show();
            } else if (type.equals("客车") && cars[i] instanceof BigCar) {
                cars[i].show();
            }
        }
    }

    /**
     * 租车。。。
     * 要不要限制类型？
     * 要不要天数作为参数
     */
    public Vechile rent(String type, String chepai) {
        for (int i = 0; i < count; i++) {
            if (cars[i].getLicensePlate().equals(chepai)) {
                if (!cars[i].isState()) {
                    return null;//已经出租了。。。失败
                }
                cars[i].setState(false);//改成已出租状态
                return cars[i];//租车成功
            }
        }
        return null;//失败
    }
    /**
     * 还车.
     * 无法区分3种情况：还车成功；车牌号没有；车牌号在，车是未出租状态
     * @param chepai
     * @return
     */

    public boolean rtnBack(String chepai) {
        for (int i = 0; i < count; i++) {
            if (cars[i].getLicensePlate().equals(chepai)) {
                if (cars[i].isState()) {
                    System.out.println("此车"+chepai+"没有出租过");
                   return false;//车子没出租
                }
                cars[i].setState(true);//改成可租状态
                return true;

            }
        }
        System.out.println("此车"+chepai+"查无此车");
        return false;
    }
    //新车采购
    public void buy(Vechile v) {
        //忽略车牌重复的问题
        if (count >= cars.length) {
            //扩容
            return;
        }
        cars[count++] = v;
    }

    /**
     * 增加出租记录
     * @param chepai
     * @param name
     * @param tele
     * @param dyas
     */
    public void addHis(String chepai,String name,String tele,int dyas){
        if(hist>=histories.length){
            RentHistory[]ax=new RentHistory[histories.length+100];
            for(int i=0;i<hist;i++){
                ax[i]=histories[i];
            }
            histories=ax;
        }
        histories[hist++]=new RentHistory(name,tele,chepai,dyas);
    }
    public void showHis(){
        for(int i=0;i<hist;i++){
            System.out.println(histories[i]);
        }
    }
    //报废车辆：出租状态不能报废
    public Vechile scrapCar(String licensePlate) {
        Vechile v=null;
        for (int i = 0; i < count; i++) {
            if (licensePlate.equals(cars[i].getLicensePlate()) && cars[i].isState()) {
                v=cars[i];//引用信息 放入v
                for (int j = i; j < count - 1; j++) {
                    cars[j] = cars[j + 1];
                }
                cars[count - 1] = null;
                count--;
                return v;
            }
        }
        return null;
    }
//    public boolean scrapCar(String licensePlate) {
//        for (int i = 0; i < count; i++) {
//            if (licensePlate.equals(cars[i].getLicensePlate()) && cars[i].isState()) {
//                for (int j = i; j < count - 1; j++) {
//                    cars[j] = cars[j + 1];
//                }
//                cars[count - 1] = null;
//                count--;
//                return true;
//            }
//        }
//        return false;
//    }
}
